#ifndef __MOBILELIB_DIRECTSHOWWRAPPER_CaptureDeviceEnumerator_H__
#define __MOBILELIB_DIRECTSHOWWRAPPER_CaptureDeviceEnumerator_H__

#include "DirectShowWrapper.h"

BEGIN_DIRECTSHOWWRAPPER_NAMESPACE

class CaptureDevice;

/// <summary>
///
/// </summary>
class CaptureDeviceEnumerator
{
public:
	/// <summary>
	///
	/// </summary>
	explicit CaptureDeviceEnumerator();

	/// <summary>
	///
	/// </summary>
	~CaptureDeviceEnumerator();

	/// <summary>
	///
	/// </summary>
	bool MoveNext(CaptureDevice** ppDevice);

	/// <summary>
	///
	/// </summary>
	void Reset();

private:
    /// <summary>
	///
	/// </summary>
    bool m_IsCaptureDeviceFound;

	/// <summary>
	///
	/// </summary>
	bool m_IsAvailable;

	/// <summary>
	///
	/// </summary>
	CLSID m_CLSID;

	/// <summary>
	///
	/// </summary>
	ICreateDevEnumPtr m_pSysDevEnum;

	/// <summary>
	///
	/// </summary>
	IEnumMonikerPtr m_pClassEnumerator;
};

END_DIRECTSHOWWRAPPER_NAMESPACE

#endif